/**
 * 根据指定对象属性进行排序
 * @param {Array} array - 需要排序的数组
 * @param {string} property - 用来排序的对象属性名
 * @param {boolean} [ascending=true] - 是否按升序排列，默认为升序
 * @returns {Array} 排序后的数组
 */
export const sortArrayByProperty = (array, property, ascending = true) => {
    // 复制一份新的数组，以避免修改原始数组
    const newArray = [...array];
    return newArray.sort((a, b) => {
        // 如果对象a或b没有指定的属性，放到最后
        if (a[property] === undefined) return 1; // a 没有属性，排到后面
        if (b[property] === undefined) return -1; // b 没有属性，排到后面
        // 按升序排列
        if (ascending) {
            return a[property] - b[property];
        }
        // 按降序排列
        else {
            return b[property] - a[property];
        }
    });
}

// // 示例使用
// const arr = [
//     { name: 'Alice', age: 25 },
//     { name: 'Bob', age: 30 },
//     { name: 'Charlie' } // 没有 age 属性
// ];

// // 按照 age 升序排序
// const sortedArrAsc = sortArrayByProperty(arr, 'age');
// console.log('升序排序:', sortedArrAsc);

// // 按照 age 降序排序
// const sortedArrDesc = sortArrayByProperty(arr, 'age', false);
// console.log('降序排序:', sortedArrDesc);
